import { createPinia } from 'pinia';

// 为子应用创建独立的 pinia 实例，添加前缀等方式来增强隔离性
const createSubAppPinia = () => {
    const pinia = createPinia();
    // 这里可以添加一些额外的逻辑来进一步区分不同子应用的状态，比如给所有状态添加一个特定的前缀
    // 以下是一个简单示例，通过修改 state 的 get 和 set 方法来添加前缀
    pinia.use(({ store }) => {
        const originalState = store.$state;
        const prefix = `subApp_${store.$id}_`;  // 根据子应用标识等生成前缀，这里简单用 store 的 id
        store.$state = new Proxy(originalState, {
            get(target, key) {
                return target[`${prefix}${key}`];
            },
            set(target, key, value) {
                target[`${prefix}${key}`] = value;
                return true;
            }
        });
    });
    return pinia;
};

export default createSubAppPinia;